using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;

namespace RC.ControlAcceso.BaseDatos
{
    public class CATurnoBD : TablaBase
    {
        #region Variables
        private int mIdTurno;
        private int mIdTarea;
        private string mDescripcion;
        private int mIdHorasTurno;
        private bool mNocturno;
        private bool mHoras50;
        private bool mHoras100;
        private bool mFeriado;
        private bool mAdicional;
        private bool mDomingoFeriado;
        private bool _estaActivo;
        #endregion

        #region Propiedades
        public int idTurno
        {
            get { return mIdTurno; }
            set { mIdTurno = value; }
        }

        public string Descripcion
        {
            get { return mDescripcion; }
            set { mDescripcion = value; }
        }

        public int idTarea
        {
            get { return mIdTarea; }
            set { mIdTarea = value; }
        }

        public int idHorasTurno
        {
            get { return mIdHorasTurno; }
            set { mIdHorasTurno = value; }
        }

        public bool Nocturno
        {
            get { return mNocturno; }
            set { mNocturno = value; }
        }

        public bool Horas50
        {
            get { return mHoras50; }
            set { mHoras50 = value; }
        }

        public bool Horas100
        {
            get { return mHoras100; }
            set { mHoras100 = value; }
        }

        public bool Feriado
        {
            get { return mFeriado; }
            set { mFeriado = value; }
        }

        public bool Adicional
        {
            get { return mAdicional; }
            set { mAdicional = value; }
        }

        public bool DomingoFeriado
        {
            get
            {
                return mDomingoFeriado;
            }
            set
            {
                mDomingoFeriado = value;
            }
        }
        public bool EstaActivo
        {
            get { return _estaActivo; }
            set { _estaActivo = value; }
        }
        #endregion

        #region Constructores
        public CATurnoBD()
        {
            ValoresIniciales();
        }
        private void ValoresIniciales()
        {
            mIdTurno = -1;
            EstaActivo = true;
        }
        public CATurnoBD(int pIdTurno)
        {
            ValoresIniciales();
            mIdTurno = pIdTurno;
            Editar();
        }
        #endregion

        #region Funciones
        protected override void AsignarSP()
        {
            SPInsertar = "CATurnoInsertar";
            SPSeleccionar = "CATurnoSeleccionar";
            SPEditar = "CATurnoEditar";
            SPActualizar = "CATurnoActualizar";
            SPRecuperar = "CATurnoRecuperar";
        }
        protected override System.Data.SqlClient.SqlParameter[] AsignaParametros(string pNombreSP)
        {
            SqlParameter[] Param;
            SqlParameter Parametro;
            switch (pNombreSP)
            {
                case "CATurnoInsertar":
                    Param = new SqlParameter[10];

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@idTarea";
                    Parametro.SqlDbType = SqlDbType.Int;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mIdTarea;
                    Param[0] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Descripcion";
                    Parametro.SqlDbType = SqlDbType.VarChar;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mDescripcion;
                    Param[1] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@idHorarioTurno";
                    Parametro.SqlDbType = SqlDbType.Int;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mIdHorasTurno;
                    Param[2] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Nocturno";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mNocturno;
                    Param[3] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Horas50";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mHoras50;
                    Param[4] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Feriados";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mFeriado;
                    Param[5] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Adicionales";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mAdicional;
                    Param[6] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Horas100";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mHoras100;
                    Param[7] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@DomingoFeriado";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mDomingoFeriado;
                    Param[8] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@EstaActivo";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = EstaActivo;
                    Param[9] = Parametro;

                    return Param;
                case "CATurnoActualizar":
                    Param = new SqlParameter[11];

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@idTurno";
                    Parametro.SqlDbType = SqlDbType.Int;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mIdTurno;
                    Param[0] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@idTarea";
                    Parametro.SqlDbType = SqlDbType.Int;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mIdTarea;
                    Param[1] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Descripcion";
                    Parametro.SqlDbType = SqlDbType.VarChar;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mDescripcion;
                    Param[2] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@idHorarioTurno";
                    Parametro.SqlDbType = SqlDbType.Int;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mIdHorasTurno;
                    Param[3] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Nocturno";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mNocturno;
                    Param[4] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Horas50";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mHoras50;
                    Param[5] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Feriados";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mFeriado;
                    Param[6] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Adicionales";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mAdicional;
                    Param[7] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@Horas100";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mHoras100;
                    Param[8] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@DomingoFeriado";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mDomingoFeriado;
                    Param[9] = Parametro;

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@EstaActivo";
                    Parametro.SqlDbType = SqlDbType.Bit;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = EstaActivo;
                    Param[10] = Parametro;

                    return Param;

                case "CATurnoEditar":
                    Param = new SqlParameter[1];

                    Parametro = new SqlParameter();
                    Parametro.ParameterName = "@idTurno";
                    Parametro.SqlDbType = SqlDbType.Int;
                    Parametro.Direction = ParameterDirection.Input;
                    Parametro.Value = mIdTurno;
                    Param[0] = Parametro;

                    return Param;

                default: return null;
            }
        }
        protected override void AsignarDatos(System.Data.SqlClient.SqlDataReader pDatos)
        {
            idTurno = pDatos.GetInt32(pDatos.GetOrdinal("idTurno"));
            mIdTarea = pDatos.GetInt32(pDatos.GetOrdinal("idTarea"));
            mDescripcion = pDatos.GetString(pDatos.GetOrdinal("Descripcion"));
            mIdHorasTurno = pDatos.GetInt32(pDatos.GetOrdinal("idHorarioTurno"));
            mNocturno = pDatos.GetBoolean(pDatos.GetOrdinal("Nocturno"));
            mHoras50 = pDatos.GetBoolean(pDatos.GetOrdinal("Horas50"));
            mFeriado = pDatos.GetBoolean(pDatos.GetOrdinal("Feriados"));
            mAdicional = pDatos.GetBoolean(pDatos.GetOrdinal("Adicionales"));
            mHoras100 = pDatos.GetBoolean(pDatos.GetOrdinal("Horas100"));
            mDomingoFeriado = pDatos.GetBoolean(pDatos.GetOrdinal("DomingoFeriado"));
            EstaActivo = pDatos.GetBoolean(pDatos.GetOrdinal("EstaActivo"));
        }
        #endregion
    }
}